Skip to content

Implement the six #86/Option G design decisions (exclude-default, typed codecs, outer-view eq, MappingInterface facade) - #89

Merged
thorwhalen merged 1 commit into
masterfrom
claude/option-g-decisions
Aug 10, 2026
Merged

Implement the six #86/Option G design decisions (exclude-default, typed codecs, outer-view eq, MappingInterface facade)#89
thorwhalen merged 1 commit into
masterfrom
claude/option-g-decisions

Conversation

@thorwhalen

Copy link
Copy Markdown
Member

Implements the maintainer's decisions on the six open questions of misc/docs/dol_issue86_design.md §11 (decided 2026-08-10; §11 is now a decision record):

  • Q0 endgame — split synthesis (recorded; P2/P3 design work): codec/instance wrapping compiles to the flat engine; @wrap_kvs class-decoration becomes is-a.
  • Q1 — private + facade: built-in MappingInterface spec + kv_interface_wrap (wrap_kvs-shaped kwargs over the engine). Engine stays private.
  • Q2 — default undeclared='exclude': wrap succeeds, undeclared use raises with guidance; 'raise' remains as strict mode.
  • Q3 — typed codecs now: optional decoded_type/encoded_type tags on Codec; adjacent stack-layer seams validated at wrap time, loud on mismatch, untagged unchecked.
  • Q4 — outer-view __eq__, no hash when the spec'd surface covers __getitem__+__iter__.
  • Q5 — __class__ transparency stays off, opt-in later with Better way to control the wrapper class #5.

6 new tests (45 total in the module); full suite green; 3.10 doctests verified. Still additive and private — no existing module behavior changes.

https://claude.ai/code/session_01FLZ8T5a6Y4P3u25yC1JD9R

- undeclared default 'raise' -> 'exclude' (loud at use, no passthrough habit;
  'raise' stays as strict mode)
- typed codecs: optional decoded_type/encoded_type tags on Codec + seam
  validation between adjacent stack layers (untagged = unchecked)
- outer-view __eq__ when the spec'd surface covers getitem+iter; __hash__
  None (mutable-mapping convention)
- MappingInterface built-in spec + kv_interface_wrap facade (wrap_kvs-shaped
  kwargs over the engine; simple things stay simple)
- design doc §11: open questions -> decision record (incl. question 0:
  split synthesis — codec wrapping compiles to the flat engine, @wrap_kvs
  class-decoration becomes is-a)

Claude-Session: https://claude.ai/code/session_01FLZ8T5a6Y4P3u25yC1JD9R
@thorwhalen
thorwhalen merged commit c4ad058 into master Aug 10, 2026
12 checks passed
@thorwhalen
thorwhalen deleted the claude/option-g-decisions branch August 10, 2026 23:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant